package com.tsyz.servlet.exception;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 错误码枚举
 * 定义系统中所有的错误码和对应的错误信息
 * <p>
 * 错误码分段规则：
 * 1xxx - 系统级错误
 * 2xxx - 参数校验错误
 * 3xxx - 业务级错误
 * 4xxx - 数据访问错误
 * 5xxx - 第三方服务错误
 * 9xxx - 其他未知错误
 *
 * @author ext.zhaoke14
 */
@Getter

@AllArgsConstructor
public enum ErrorEnumCode {

    // ==================== 系统级错误 (1000-1999) ====================
    SUCCESS(1000, "系统", "操作成功"),

    // ==================== 参数校验错误 (2000-2999) ====================
    PARAM_NULL(2001, "参数错误", "请求参数不能为空"),

    // ==================== 业务级错误 (3000-3999) ====================
    BUSINESS_ERROR(3000, "业务错误", "业务错误"),

    // ==================== 数据访问错误 (4000-4999) ====================
    DATABASE_ERROR(4001, "数据库错误", "数据库操作失败"),

    // ==================== 第三方服务错误 (5000-5999) ====================
    THIRD_PARTY_SERVICE_ERROR(5001, "第三方服务异常", "调用第三方服务时发生错误"),

    // ==================== 其他错误 (9000-9999) ====================
    UNKNOWN_ERROR(8001, "未知错误", "发生了未预期的错误"),
    EXCEPTION_ERROR(8002, "未知错误", "发生了未预期的错误"),
    THROWABLE_ERROR(9001, "未知异常", "发生了未预期的异常");


    /**
     * 错误码
     */
    private final Integer code;

    /**
     * 标题,可为空
     */
    private final String title;

    /**
     * 错误信息,可为空
     */
    private final String message;


}
